package com.smart.community.region.dto;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.List;

/**
 * 物业公司建筑类型DTO
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 */
@Data
public class PropertyCompanyBuildingTypeDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    private Long id;

    /**
     * 物业公司ID（可选，NULL表示平台公共建筑类型）
     */
    private Long propertyCompanyId;

    /**
     * 建筑类型名称
     */
    @NotBlank(message = "建筑类型名称不能为空")
    @Size(min = 2, max = 200, message = "建筑类型名称长度必须在2-200字符之间")
    private String buildingTypeName;

    /**
     * 建筑类型编码
     */
    @NotBlank(message = "建筑类型编码不能为空")
    @Size(min = 2, max = 100, message = "建筑类型编码长度必须在2-100字符之间")
    private String buildingTypeCode;

    /**
     * 关联的基础分类ID列表
     */
    @NotNull(message = "关联分类不能为空")
    private List<Long> categoryIds;

    /**
     * 建筑类型描述
     */
    @Size(max = 500, message = "建筑类型描述长度不能超过500字符")
    private String description;

    /**
     * 排序
     */
    private Integer sortOrder;

    /**
     * 状态：0-禁用，1-启用
     */
    @NotNull(message = "状态不能为空")
    private Integer status;

    /**
     * 备注
     */
    @Size(max = 500, message = "备注长度不能超过500字符")
    private String remark;
}
